package objetos;

import java.util.Observable;
import movimiento.*;
import ar.uba.fi.algo3.titiritero.*;
import auxiliares.Vector;

/*
 * Clase abstracta de la que heredan los objetos inanimados. Un objeto inanimado
 * es un objeto de escenograf�a, que no interactua con los objetos m�viles.
 */
public abstract class ObjetoInanimado extends Observable implements ObjetoVivo,
		Posicionable {
	private Posicion posicion;
	private Vector velocidad;
	private PatronMovimiento patron;

	@Override
	public void vivir() {
		this.mover();
		this.volverAPantalla();
	}

	public void mover() {
		Posicion nuevaPos = patron.calcularNuevaPosicion(this.posicion,
				this.velocidad);
		this.posicion = nuevaPos;
	}

	/*
	 * M�todo que determina el comportamiento de cada objeto inanimado cuando
	 * sale de la pantalla de juego y como vuelve a �sta.
	 */
	public abstract void volverAPantalla();

	public Posicion getPosicion() {
		return posicion;
	}

	public void setPosicion(Posicion posicion) {
		this.posicion = posicion;
	}

	public Vector getVelocidad() {
		return velocidad;
	}

	public void setVelocidad(Vector velocidad) {
		this.velocidad = velocidad;
	}

	public PatronMovimiento getPatron() {
		return patron;
	}

	public void setPatron(PatronMovimiento patron) {
		this.patron = patron;
	}

	@Override
	public int getX() {
		return this.getPosicion().getEnX();
	}

	@Override
	public int getY() {
		return this.getPosicion().getEnY();
	}

}
